package com.qk.controller;

import com.qk.common.Result;
import com.qk.utils.AliyunOSSOperator;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.util.UUID;

/**
 * 此为【服务器端】
 * 用于接收前端上传来的文件参数资源
 */
@Slf4j
@RestController
public class UploadController {
    @Autowired                                          //  因为下面我要用【文件上传工具类↓】所以这里通过 DI依赖注入 声明出来。
    private AliyunOSSOperator aliyunOSSOperator;        //   在工具类中，已经通过 @Component注解 把其交由IOC容器管理了

    /**
     * 文件上传
     */
    @PostMapping("/upload")
    public Result upload(MultipartFile image) throws Exception {   // 【服务器端】接收前端传来的文件参数，指定用MultipartFile类型来接收
        log.info("上传文件: {}" , image);
        // 1. 【获取新文件名】 ---> 通过UUID随机生成一个36位的字符串，唯一不重复
        String newFileName = UUID.randomUUID().toString() + "_" + image.getOriginalFilename(); // 新：【UUID随机生成+原始文件名=拼接新文件名】
        // 2. 【获取文件在阿里云的URL路径】
        String url = aliyunOSSOperator.upload(image.getBytes(), newFileName);   //upload(byte[] content, String objectName)
        return Result.success(url);
    }
}